//路由鉴权文件用于限制，路由在什么情况下可以访问，和不可以访问。
import router from "./router";
import nprogress from "nprogress";
import 'nprogress/nprogress.css'; //进度条效果，路由切换的时候显示
import useUserStore from "./store/modules/user";

// 全局前置守卫：任意路由切换都会触发
router.beforeEach(async (to, from, next) => {
    console.log('前置守卫', to, from)
    document.title = '小米同学' + to.meta.title
    // next表示放行函数
    let username = useUserStore().username
    // let token = useUserStore().token //这个不是持久化，每次刷新会导致退出到登录页面，就很烦人
    let token = localStorage.getItem('TOKEN')
    if (token) { //这里简单的用token字段是否有值来判断作为登录条件还是太不严谨了，应该结合token有效期来做（使用插件jwt-decode）
        if (to.path == '/login') {
            next({ path: '/' })
        } else {
            if (username) {
                next()
            } else {
                try {
                    await useUserStore().userInfo()
                    next({ ...to, replace: true })
                } catch (error) {
                    useUserStore().loginOut()
                    next({ path: '/login' })
                }
            }
        }
    } else {
        if (to.path == '/login') {
            next()
        } else {
            next({ path: '/login', query: { redirect: to.path } })
        }
    }
    nprogress.start()
})

//全局后置守卫
router.afterEach(() => {
    nprogress.done()
})
